package studentInformation;

import exception.ageException;
import exception.numberException;

import java.io.Serializable;

/**
 * @author LinLe
 * @create 2020-12-17 17:18
 */
/*4. 编程题
        使用 List 集合实现简易的学生信息管理系统，要求打印字符界面提示用户选择相应的功
        能，根据用户输入的选择去实现增加、删除、修改、查找以及遍历所有学生信息的功能。
        其中学生的信息有：学号、姓名、年龄。
  1. 编程题
    a.使用 List 集合实现简易的学生信息管理系统，要求打印字符界面提示用户选择相应的功能，
    根据用户输入的选择去实现增加、删除、修改、查找以及遍历所有学生信息的功能。
    b.自定义学号异常类和年龄异常类，并在该成员变量不合理时产生异常对象并抛出。
    c.当系统退出时将 List 集合中所有学生信息写入到文件中，当系统启动时读取文件中所 有学生信息到 List 集合中。 */
public class Student implements Serializable {
    private static final long serialVersionUID = 7706837805607851185L;
    //    static final long serialVersionUID = -3387516993124229950L;
    private String name;
    private int age;
    private String studentNumber;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", studentNumber='" + studentNumber + '\'' +
                '}';
    }

    public Student(String name, int age, String studentNumber) throws ageException, numberException {
        this.name = name;
        setAge(age);
        setStudentNumber(studentNumber);
    }

    public Student() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) throws ageException {
        if(age > 0 && age < 100){
            this.age = age;
        }else {
            throw new ageException("年龄不正确！！");
        }
    }

    public String getStudentNumber() {
        return studentNumber;
    }

    public void setStudentNumber(String studentNumber) throws numberException {
        if(studentNumber.length() == 10){
            this.studentNumber = studentNumber;
        }else {
            throw new numberException("学号不正确！！");
        }
    }
}
